/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FenCombatDefaite.java
 *
 * Created on 9 janv. 2012, 14:50:21
 */

package InterfaceGraphique;

import cartes.Carte;

import java.awt.Color;
import cartes.Monstre;
import common.Constantes;
import comportement.IncidentFacheux;
import java.util.ArrayList;

/**
 *
 * @author ophelie.moyssan
 */
public class FenCombatDefaite extends javax.swing.JFrame {

    private Monstre m;
    private int resultat=0;

    public int getResultat() {
        return resultat;
    }

    public void setResultat(int resultat) {
        this.resultat = resultat;
    }
    
    
    /** Creates new form FenCombatDefaite */
    public FenCombatDefaite() {
        initComponents();
        this.bouton_FIN.setVisible(false);   
        this.texte_incident.setVisible(false);
        this.resultat_de_incident.setVisible(false);
        this.getContentPane().setBackground(new Color(237,200,132));
    }/** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    
    private void affichage_incident(int nombre){
        ArrayList<IncidentFacheux> un_incident;
        un_incident = m.getIncidentFacheux();
   
        IncidentFacheux un = un_incident.get(nombre);
        un.provoquer(MainApplication.getJoueurEnCours());
        //affichage du texte de l'incident facheux
        this.texte_incident.setText("Voici votre incident:  " + un.getDescription());
        this.texte_incident.setVisible(true);
        
    }
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        boutonDe = new javax.swing.JToggleButton();
        bouton_FIN = new javax.swing.JToggleButton();
        texte_incident = new javax.swing.JLabel();
        resultat_de_incident = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel2.setText("Votre niveau n'est pas suffisant pour combattre le monstre, vous devez fuir!!");
        jLabel2.setName("jLabel2"); // NOI18N

        boutonDe.setText("Lancer le dé");
        boutonDe.setName("boutonDe"); // NOI18N
        boutonDe.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                boutonDeMouseClicked(evt);
            }
        });

        bouton_FIN.setText("Fin du combat");
        bouton_FIN.setName("bouton_FIN"); // NOI18N
        bouton_FIN.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                bouton_FINMouseClicked(evt);
            }
        });

        texte_incident.setText("jLabel1");
        texte_incident.setName("texte_incident"); // NOI18N

        resultat_de_incident.setText("jLabel1");
        resultat_de_incident.setName("resultat_de_incident"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(85, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(resultat_de_incident)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(boutonDe)
                        .addGap(32, 32, 32)
                        .addComponent(bouton_FIN))
                    .addComponent(texte_incident)
                    .addComponent(jLabel2))
                .addGap(74, 74, 74))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(26, 26, 26)
                .addComponent(jLabel2)
                .addGap(19, 19, 19)
                .addComponent(texte_incident)
                .addGap(27, 27, 27)
                .addComponent(resultat_de_incident)
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(boutonDe)
                    .addComponent(bouton_FIN))
                .addContainerGap(122, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void boutonDeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_boutonDeMouseClicked
        // TODO add your handling code here:

         int resultat2=0;
                while (this.resultat==0){
                    
                
                resultat2=MainApplication.getJoueurEnCours().lancerDe();
                this.setResultat(resultat2);
                }

                //System.out.print(resultat);
                //affichage du résultat

                MainApplication.lancementDe(resultat);
               
                this.boutonDe.setVisible(false);
                this.bouton_FIN.setVisible(true);
         

                if (resultat >= 5)
                {
                    //déguerpir
                    this.jLabel2.setText("<html>Vous pouvez déguerpir!!</html>");
                    this.bouton_FIN.setText(Constantes.FIN_COMBAT);
                    this.setResultat(0);
                    this.resultat=0;
                }
                else
                    // vous avez perdu
                {
                    this.jLabel2.setText("<html>Vous avez perdu, le monstre vous inflige un incident facheux!!</html>");
                   
                    //récupération de l'incident facheux de la carte monstre
                    ArrayList<IncidentFacheux> un_incident;
                    un_incident = m.getIncidentFacheux();

                    if (m.choix == 0 )
                        //le joueur n'a pas le choix pour son incident facheux
                    {
                        this.affichage_incident(0);
                    }
                    else if (m.choix == 1 )
                        //le joueur doit lancé un dé
                    {
                        int de = 0 ;
                        de=MainApplication.getJoueurEnCours().lancerDe();
                        MainApplication.lancementDe(de);

                        if ( m.getNom().equals("EscargotsSousAcide"))
                        {
                            
                           // à revoir , pour l'instant, défausser 3 cartes
                            //affichage du texte de l'incident facheux
                            // défausser nombre de cartes
                            this.affichage_incident(0);
                   
                        }
                        else //c'est le 3872 orques
                        {

                            if (de > 2 )
                            {
                                    this.texte_incident.setText("<html>Vous perdez " + de + "niveaux");
                                    MainApplication.getJoueurEnCours().upNiveau(-resultat, false);                                   this.bouton_FIN.setText(Constantes.FIN_COMBAT);
                            }
                            else
                            // vous êtes mort
                            {
                                this.affichage_incident(0);

                            }
                        }


                        this.resultat_de_incident.setVisible(true);  
                        this.resultat_de_incident.setText(" ");
                    }
                    else if (m.choix == 2)
                    //on teste les classes
                    {
                        if ( m.getNom().equals("Horreur"))
                        {
                            //si c'est un magicien
                            if (MainApplication.getJoueurEnCours().getInventaire().getClasse().contains(Constantes.MAGICIEN))
                            {
                                //défausser carte
                                this.affichage_incident(0);
     
                            }
                            else
                            {
                                //mort
                                this.affichage_incident(1);

                            }
                    
                        }

                    }
                    else if (m.choix == 3)
                    //on défausse l'inventaire
                    {
                        //défausser carte



                       if ( m.getNom().equals("BigFoot") || m.getNom().equals("Morpions") || m.getNom().equals("LePreuxChaun") 
                               || m.getNom().equals("Troliste")|| m.getNom().equals("BinoclarHurleur"))

                            //defausser carte speciales
                        {
                            this.affichage_incident(0);
                        }

                        else if ( m.getNom().equals("Tut"))
                            //defausse main et inventaire
                        {
                            IncidentFacheux un = un_incident.get(0);
                            un.provoquer(MainApplication.getJoueurEnCours());
                            IncidentFacheux deux = un_incident.get(1);
                            deux.provoquer(MainApplication.getJoueurEnCours());
                            this.texte_incident.setText("Voici vos incidents:  " + un.getDescription() + " et " + deux.getDescription() );
                            this.texte_incident.setVisible(true);


                        }
                        else
                        //on défausse tout l'inventaire
                        {
                            this.affichage_incident(0);

                        }


                    }
                    else if (m.choix == 4)
                    //on défausse la main
                    {
                        this.affichage_incident(1);

                        
                    }
                     else if (m.choix == 5)
                    //perte bizarre de niveau
                    {
                         if ( m.getNom().equals("Succube"))
                            //defausse main et inventaire
                        {
                              if (MainApplication.getJoueurEnCours().getInventaire().getRace().contains(Constantes.ELFE))
                            {
                                this.affichage_incident(1);
                            }
                              else {
                                  
                                 this.affichage_incident(0);
                                  
                              }
                              
                   
                         }
                         else if( m.getNom().equals("Amazone")){
                             this.affichage_incident(1);
                             
                         }
                                 else if( m.getNom().equals("SuceurDeTete")){
                             IncidentFacheux un = un_incident.get(0);
                            un.provoquer(MainApplication.getJoueurEnCours());
                            IncidentFacheux deux = un_incident.get(1);
                            deux.provoquer(MainApplication.getJoueurEnCours());
                            this.texte_incident.setText("Voici vos incidents:  " + un.getDescription() + " et " + deux.getDescription() );
                            this.texte_incident.setVisible(true);

                             
                         }
                         else{
                             this.affichage_incident(0);
                         }

                        
                    }
                    this.setResultat(0);
                    this.resultat=0;
                   




                   

                    //appel à la fonction incident facheux

                    this.bouton_FIN.setText(Constantes.FIN_COMBAT);


                    this.bouton_FIN.setText(Constantes.FIN_COMBAT);
                    
      
                }
                this.dispose();
                this.setResultat(0);
                this.resultat=0;
               // this.setDefaultCloseOperation(0);
               // System.exit(0);
               

    }//GEN-LAST:event_boutonDeMouseClicked

    //bouton fin du combat
    private void bouton_FINMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_bouton_FINMouseClicked
        // TODO add your handling code here:
        MainApplication.endCombat();

    }//GEN-LAST:event_bouton_FINMouseClicked


    
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FenCombatDefaite().setVisible(true);
            }
        });
    }



    public void load(Monstre m) {
       this.m = m;
       this.resultat=0;
       
    }


      

    






    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JToggleButton boutonDe;
    private javax.swing.JToggleButton bouton_FIN;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel resultat_de_incident;
    private javax.swing.JLabel texte_incident;
    // End of variables declaration//GEN-END:variables

}
